Spring单例模式和多例模式以及懒加载

您所在的位置:网站首页 spring bean默认是懒加载吗 Spring单例模式和多例模式以及懒加载

Spring单例模式和多例模式以及懒加载

2024-07-16 17:04| 来源: 网络整理| 查看: 265

Spring默认是单例模式,单例模式就意味着getBean()取得的bean都是唯一的,多例模式是每次getbean都返回新的一个对象。

@Component @Scope("prototype") public class X { public X(){ System.out.println("X Constructor"); } } public static void main(String[] args) throws InterruptedException { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(); ac.register(Appconfig.class); ac.refresh(); System.out.println(ac.getBean("x")); System.out.println(ac.getBean("x")); }

控制台打印

X Constructor test.X@41ee392b X Constructor test.X@1e67a849

证明所取得的bean是不同的对象

单例模式要想懒加载必须在相应类上加@Lazy注解,多例模式先天是懒加载的。

在AbstractApplicationContext的refresh内的this.finishBeanFactoryInitialization(beanFactory);上加断点,调整成单例模式(默认就是单例),点下一步,发现已经类X已经实例化,加上@Lazy注解发现在 System.out.println(ac.getBean("x"));时才实例化。  


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3